package com.bt.controller.user;

import com.bt.dto.UserEditArticleDTO;
import com.bt.dto.UserUpdateDTO;
import com.bt.result.PageResult;
import com.bt.result.Result;
import com.bt.result.list;
import com.bt.service.UserService;
import com.bt.vo.UserDateListVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @Description TODO
 * @Author XJL
 * @Date 2023-05-04 15:06
 */
@Api(tags = "用户相关接口")
@RestController
@Slf4j
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 我的文章接口
     * @param limit
     * @param page
     * @return
     */
    @ApiOperation("我的文章接口")
    @GetMapping("/myArticle")
    public Result page(Integer limit,Integer page){
        log.info("我的文章接口:{}",limit,page);
        PageResult pageResult = userService.page(limit,page);
        return Result.success(pageResult);
    }


    /**
     * 我的收藏/点赞文章接口
     * @param limit
     * @param page
     * @param type
     * @return
     */
    @ApiOperation("我的收藏/点赞文章接口")
    @GetMapping("/userDataList")
    public Result<UserDateListVO> userDataList(Integer limit, Integer page, Integer type){
        log.info("我的收藏/点赞文章接口:{}",page,limit,type);
        PageResult pageResult = userService.userDataList(page,limit,type);
        UserDateListVO userDateListVO = new UserDateListVO(pageResult);
        return Result.success(userDateListVO);
    }


    /**
     * 修改文章接口
     * @return
     */
    @ApiOperation("修改文章接口")
    @PostMapping("/editArticle")
    public Result update(@RequestBody UserEditArticleDTO userEditArticleDTO){
        userService.update(userEditArticleDTO);
        return Result.success();
    }


    /**
     * 修改用户资料接口
     * @param userUpdateDTO
     * @return
     */
    @ApiOperation("修改用户资料接口")
    @PostMapping("/update")
    public Result updateUser(@RequestBody UserUpdateDTO userUpdateDTO){
        userService.updateUser(userUpdateDTO);
        return Result.success();
    }
}
